package com.smarttest.portal.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.smarttest.common.beans.GeneralResultWithStatus;
import com.smarttest.common.beans.TestResult;
import com.smarttest.portal.pojo.DbAutoSetting;

public interface Autog7Service {
//	TestResult debugTest(String apiurl, String httpmethod, JSONObject outerparams,
//			Boolean dataAsParams, JSONObject testdata);
	/**
	 * 根据sumid获得接口所有详情id
	 * @param sid
	 * @return
	 */
	String getDetailsIds(int sid);
	/**
	 * 获得定时任务列表
	 * @param describe
	 * @param pageIndex
	 * @param pageSize
	 * @param sortField
	 * @param sortOrder
	 * @return
	 */
	HashMap<String,Object> getTimerTaskList(String describe, int pageIndex, int pageSize,
			String sortField, String sortOrder);
	/**
	 * 更新定时任务列表
	 * @param JA
	 * @return
	 */
	int updateTimerTaskList(JSONArray JA);
//	GeneralResultWithStatus runTest(JSONObject testids);
	/**
	 * 获得测试id(key为summrayid和value为detailid的JSON对象)
	 * @param env
	 * @param modules
	 * @param internames
	 * @param testers
	 * @param degrees
	 * @param level
	 * @return
	 */
	JSONObject getTestIds(String env, String modules, String internames,
			String testers, String degrees, int level);
	/**
	 * 删除用例
	 * @param ids
	 * @return
	 * @throws Exception
	 */
	int deleteCases(List<Integer> ids) throws Exception;
//	int updateSumResult(Integer sumid, int lastresult, Date lastruntime);
	/**
	 * 从excel导入用例
	 * @param files
	 * @return
	 */
	int importCaseFromExcel(List<String> files);
	/**
	 * 插入summray 结果
	 * @param sumid
	 * @param releaseid
	 * @return
	 */
	int insertSumResult(int sumid, int releaseid);
	/**
	 * 创建新版本
	 * @param envid
	 * @param name
	 * @param testids
	 * @return
	 */
	int createNewRelease(int envid, String name, String testids);
	/**
	 * 运行单个接口场景
	 * @param detailid
	 * @param sumresultid
	 * @return
	 */
	TestResult runTest(int detailid, int sumresultid);
	/**
	 * 更新summary结果
	 * @param sumid
	 * @param sumresultid
	 * @param lastresult
	 * @param lastruntime
	 * @param result
	 * @return
	 */
	int updateSumResult(Integer sumid, Integer sumresultid, int lastresult,
			Date lastruntime, String result);
	/**
	 * 获取版本名称
	 * @param releaseId
	 * @return
	 */
	String getReleaseName(int releaseId);
	/**
	 * 获取测试环境id
	 * @param envname
	 * @return
	 */
	int getEnvid(String envname);
	/**
	 * 运行一个测试集
	 * @param testids
	 * @param releaseid
	 * @return
	 */
	GeneralResultWithStatus runTest(JSONObject testids, int releaseid);
	Map<Integer, Date> newTestMap();
	/**
	 * 发送报文
	 * @param sendmethod 调用方法
	 * @param add 地址
	 * @param port 端口
	 * @param sendtime 发送时间
	 * @param format 时间格式
	 * @param internal 时间间隔
	 * @param msg 消息
	 * @param startnum 起始行
	 * @param count 发送条数
	 * @param key 报文发送存放msgmap对应的key
	 * @return
	 */
	Map<Integer, Date> sendMsg(String sendmethod, String add, int port,
			String sendtime, String format, int internal, String msg,
			String startnum, String count, String key);
	/**
	 * 获得运行前设置
	 * @param env
	 * @param modules
	 * @return
	 */
	List<DbAutoSetting> getSettingBefore(int env, String modules);
	/**
	 * 获得运行后设置
	 * @param env
	 * @param modules
	 * @return
	 */
	List<DbAutoSetting> getSettingAfter(int env, String modules);
	/**
	 * 根据sumid获取模块
	 * @param sumid
	 * @return
	 */
	int getModuleBySumid(int sumid);
	/**
	 * 初始化数据
	 * @param datainits 数据初始化JSON字符串（对应数据库表datainits字段）
	 */
	void initData(String datainits);
	/**
	 * 调试
	 * @param apiurl
	 * @param httpmethod
	 * @param outerparams
	 * @param dataAsParams
	 * @param datas
	 * @return
	 */
	TestResult debugTest(String apiurl, String httpmethod,
			JSONObject outerparams, Boolean dataAsParams, JSONObject datas);
	/**
	 * 根据sumid获取datainits
	 * @param sumid
	 * @return
	 */
	String getDatainitsBySumid(int sumid); 
}
